import java.lang.reflect.*;

/**
 * This class represents the Observable Interface.
 * 
 * @author (Dilyan GEORGIEV)
 * @author (Thomas KOBER)
 * @author (Matthew MCDONALD)
 * 
 * @version (1.0)
 */
public interface Observable  
{
    /**
     * Adds the given GameObserver to the List of Observers.
     * @param the GameObsever to be added.
     */
    public void addObserver(GameObserver o);
    
    /**
     * Removes the given GameObserver from the List of Observers.
     * @param the GameObserver to be removed.
     */
    public void removeObserver(GameObserver o);
    
    /**
     * Notifies the registered Observers about an update.
     * @param theMethod the Method to be invoked on update.
     * @param args the List of Arguments, correpsonding to theMethod.
     */
    public void notifyObservers(Method theMethod, Object... args);
}
